<?php
class RegistroController extends AppController {
    // var $helpers = array ('Html','Form');
    //errore:var $name = 'Pages'; // riferimento alla cartella delle view
    
    public function beforeFilter(){
    	
		parent::beforeFilter();
        $this->Auth->allow('add' );
    }
    
    public function add($idClasseDisciplinaDocente,$data,$classe,$disciplina){
        $this->Registro->create();
        $this->Registro->set('docente_id', $this->Session->read("Docente.Docente.id"));
        $this->Registro->set('classe_id',$classe);
        $this->Registro->set('disciplina_id',$disciplina);
        $this->Registro->set('classe_disciplina_docente_id',$idClasseDisciplinaDocente);
        $this->Registro->set('dt_last_login',date('Y-m-d H:i:s'));
        if($this->Registro->save())
            $this->redirect(array('controller'=>'registro','action'=>'view',$idClasseDisciplinaDocente,$data,$classe,$disciplina));
        else {
            CakeLog::error('errore nel salvataggio del Registro :'.$this->Registro->data);
            $this->Session->setFlash(__('errore nel salvataggio del Registro'),LOG_ERR);
            $this->redirect(array('controller'=>'registro','action'=>'index'));
    
        }
    }
    
    public function index() {
        $this->loadModel('Docente');
        $this->loadModel('ClasseDisciplinaDocente');
        
        $idUserOnSession =  CakeSession::read("Auth.User.id");
        $docente = $this->Docente->findByUserId($idUserOnSession);
        
        //lo metto anche in sessione visto che serve sempre...
        $this->Session->write("Docente",$docente);
        $classeDisciplinaDocente = $this->ClasseDisciplinaDocente->findAllByDocenteId($docente['Docente']['id']);

        $this->set('classe_disciplina_docente',$classeDisciplinaDocente);
    }
	
	public function view($idClasseDisciplinaDocente,$data,$classe,$disciplina){
	    //vado ad aprire gli eventi per questa data.
	    //se non ci sono li creo
	    $this->loadModel('Evento');
	    $registro = $this->Registro->find('first',array(
                                                'conditions'=>array(
                                                    'ClasseDisciplinaDocente.id'=>$idClasseDisciplinaDocente
                                                    )
                                                ));
	    if (!$registro) {
             $this->set('idClasseDisciplinaDocente',$idClasseDisciplinaDocente);
             $this->set('data',$data);
             $this->set('classe',$classe);
             $this->set('disciplina',$disciplina);
             $this->render('add_registro'); 
             return;
        }
        $idRegistro = $registro['Registro']['id'];
        $evento = $this->Evento->findByRegistroIdAndData($idRegistro,$data);
        //in caso non sia stato mai associato un evento, vado nella pagina di ADD evento
        if(!$evento){
             $this->set('idClasseDisciplinaDocente',$idClasseDisciplinaDocente);
            
             $this->set('data',$data);
             $this->set('classe',$classe);
             $this->set('disciplina',$disciplina);
             $this->set('idRegistro',$idRegistro);
             $this->render('add'); 
             return;
                       
        }
        
        
        
        $this->loadModel("EventoStudente");
        $this->EventoStudente->recursive= 3;
        $this->EventoStudente->bindModel(array('belongsTo' => array('Studente','Valutazione')));
        $this->EventoStudente->Studente->unbindModel(array('belongsTo' => array('Classe')));
        $this->EventoStudente->Studente->unbindModel(array('hasAndBelongsToMany' => array('Evento')));
        // $this->Evento->unbindModel(array('belongsTo' => array('Registro')));
        // $this->Evento->Studente->unbindModel(array('belongsTo' => array('Classe')));
        // $this->Evento->Studente->bindModel(array('hasOne' => array('Valutazione')));
        //$studentiQuery = $this->Evento->read(null,$evento['Evento']['id']);
        $studentiQuery = $this->EventoStudente->findAllByEventoId($evento['Evento']['id']);
        
         //$studentiQuery = $this->Evento->query($this->Evento->setQueryPresenze($evento['Evento']['id']),true);
        //ora mi creo un array per ogni utente con tutte le info che mi servono....
        $studentiEventoList = array();
        $idStudentetoSet = "";
        $tempStudente = "";
        $studentiQuery = Set::sort($studentiQuery, '{n}.Studente.User.Anagrafica.cognome', 'asc');
        //pr($studentiQuery);die;
        foreach ($studentiQuery as $studente) {
                //se è diverso devo creare una nuova riga da 0   
               if($studente['Studente']['id'] != $idStudentetoSet)
               {
                   if($tempStudente!="")$studentiEventoList[]=$tempStudente;    
                   $tempStudente = array();
                   $tempStudente['id'] = $studente['Studente']['id'];
                   $tempStudente['cognome'] = $studente['Studente']['User']['Anagrafica']['cognome'];
                   $tempStudente['nome'] = $studente['Studente']['User']['Anagrafica']['nome'];
                   $tempStudente['presenza'] = $studente['EventoStudente']['presenza'];
                   $tempStudente['er'] = $studente['EventoStudente']['entrata_ritardo'];
                   $tempStudente['ua'] = $studente['EventoStudente']['uscita_anticipata'];
                   $idStudentetoSet = $studente['Studente']['id'];

               }else{
                   $tempStudente['valutazione_'.$studente['Valutazione']['tipo_valutazione']]['id'] = $studente['Valutazione']['id'];
                   $tempStudente['valutazione_'.$studente['Valutazione']['tipo_valutazione']]['voto'] = $studente['Valutazione']['voto'];
                   $tempStudente['valutazione_'.$studente['Valutazione']['tipo_valutazione']]['nota'] = $studente['Valutazione']['nota'];
                   $tempStudente['valutazione_'.$studente['Valutazione']['tipo_valutazione']]['domande'] = $studente['Valutazione']['domande'];
                   $tempStudente['valutazione_'.$studente['Valutazione']['tipo_valutazione']]['dt_inserimento'] = $studente['Valutazione']['dt_inserimento'];
                    
               }
               
        }

        $this->loadModel("Plan");
        $plan = $this->Plan->findByClasseDisciplinaId($idClasseDisciplinaDocente);

        $studentiEventoList[]=$tempStudente;
        $this->set('registro',$registro);
        $this->set('evento',$evento);
        $this->set('plan',$plan);
        $this->set('studentiEventoList',$studentiEventoList);
    }
	
    
 
	
	
		

}
?>